home *** CD-ROM | disk | FTP | other *** search
/ Danny Amor's Online Library / Danny Amor's Online Library - Volume 1.iso / bbs / rfc / rfcxxxx_8.lha / rfc1693 < prev    next >
Text File  |  1995-07-26  |  90KB  |  2,020 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                       T.  Connolly
  8. Request for Comments: 1693                                       P. Amer
  9. Category: Experimental                                         P. Conrad
  10.                                                   University of Delaware
  11.                                                            November 1994
  12.  
  13.  
  14.               An Extension to TCP : Partial Order Service
  15.  
  16. Status of This Memo
  17.  
  18.    This memo defines an Experimental Protocol for the Internet
  19.    community.  This memo does not specify an Internet standard of any
  20.    kind.  Discussion and suggestions for improvement are requested.
  21.    Distribution of this memo is unlimited
  22.  
  23. IESG Note:
  24.  
  25.    Note that the work contained in this memo does not describe an
  26.    Internet standard.  The Transport AD and Transport Directorate do not
  27.    recommend the implementation of the TCP modifications described.
  28.    However, outside the context of TCP, we find that the memo offers a
  29.    useful analysis of how misordered and incomplete data may be handled.
  30.    See, for example, the discussion of Application Layer Framing by D.
  31.    Clark and D. Tennenhouse in, "Architectural Considerations for a New
  32.    Generation of Protocols", SIGCOM 90 Proceedings, ACM, September 1990.
  33.  
  34. Abstract
  35.  
  36.    This RFC introduces a new transport mechanism for TCP based upon
  37.    partial ordering.  The aim is to present the concepts of partial
  38.    ordering and promote discussions on its usefulness in network
  39.    communications.  Distribution of this memo is unlimited.
  40.  
  41. Introduction
  42.  
  43.    A service which allows partial order delivery and partial reliability
  44.    is one which requires some, but not all objects to be received in the
  45.    order transmitted while also allowing objects to be transmitted
  46.    unreliably (i.e., some may be lost).
  47.  
  48.    The realization of such a service requires, (1) communication and/or
  49.    negotiation of what constitutes a valid ordering and/or loss-level,
  50.    and (2) an algorithm which enables the receiver to ascertain the
  51.    deliverability of objects as they arrive.  These issues are addressed
  52.    here - both conceptually and formally - summarizing the results of
  53.    research and initial implementation efforts.
  54.  
  55.  
  56.  
  57.  
  58. Connolly, Amer & Conrad                                         [Page 1]
  59.  
  60. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  61.  
  62.  
  63.    The authors envision the use of a partial order service within a
  64.    connection-oriented, transport protocol such as TCP providing a
  65.    further level of granularity to the transport user in terms of the
  66.    type and quality of offered service.  This RFC focuses specifically
  67.    on extending TCP to provide partial order connections.
  68.  
  69.    The idea of a partial order service is not limited to TCP. It may be
  70.    considered a useful option for any transport protocol and we
  71.    encourage researchers and practitioners to investigate further the
  72.    most effective uses for partial ordering whether in a next-generation
  73.    TCP, or another general purpose protocol such as XTP, or perhaps
  74.    within a "special purpose" protocol tailored to a specific
  75.    application and network profile.
  76.  
  77.    Finally, while the crux of this RFC relates to and introduces a new
  78.    way of considering object ordering, a number of other classic
  79.    transport mechanisms are also seen in a new light - among these are
  80.    reliability, window management and data acknowledgments.
  81.  
  82.    Keywords: partial order, quality of service, reliability, multimedia,
  83.    client/server database, Windows, transport protocol
  84.  
  85. Table of Contents
  86.  
  87.    1. Introduction and motivation ..................................  3
  88.    2. Partial Order Delivery .......................................  4
  89.    2.1 Example 1: Remote Database ..................................  4
  90.    2.2 Example 2: Multimedia .......................................  8
  91.    2.3 Example 3: Windows Screen Refresh ...........................  9
  92.    2.4 Potential Savings ........................................... 10
  93.    3. Reliability vs. Order ........................................ 12
  94.    3.1 Reliability Classes ......................................... 13
  95.    4. Partial Order Connection ..................................... 15
  96.    4.1 Connection Establishment .................................... 16
  97.    4.2 Data Transmission ........................................... 19
  98.    4.2.1 Sender .................................................... 22
  99.    4.2.2 Receiver .................................................. 25
  100.    5. Quantifying and Comparing Partial Order Services ............. 30
  101.    6. Future Direction ............................................. 31
  102.    7. Summary ...................................................... 32
  103.    8. References ................................................... 34
  104.    Security Considerations ......................................... 35
  105.    Authors' Addresses .............................................. 36
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114. Connolly, Amer & Conrad                                         [Page 2]
  115.  
  116. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  117.  
  118.  
  119. 1. Introduction and motivation
  120.  
  121.    Current applications that need to communicate objects (i.e., octets,
  122.    packets, frames, protocol data units) usually choose between a fully
  123.    ordered service such as that currently provided by TCP and one that
  124.    does not guarantee any ordering such as that provided by UDP.  A
  125.    similar "all-or-nothing" choice is made for object reliability -
  126.    reliable connections which guarantee all objects will be delivered
  127.    verses unreliable data transport which makes no guarantee.  What is
  128.    more appropriate for some applications is a partial order and/or
  129.    partial reliability service where a subset of objects being
  130.    communicated must arrive in the order transmitted, yet some objects
  131.    may arrive in a different order, and some (well specified subset) of
  132.    the objects may not arrive at all.
  133.  
  134.    One motivating application for a partial order service is the
  135.    emerging area of multimedia communications.  Multimedia traffic is
  136.    often characterized either by periodic, synchronized parallel streams
  137.    of information (e.g., combined audio-video), or by structured image
  138.    streams (e.g., displays of multiple overlapping and nonoverlapping
  139.    windows).  These applications have a high degree of tolerance for
  140.    less-than-fully-ordered data transport as well as data loss.  Thus
  141.    they are ideal candidates for using a partial order, partial
  142.    reliability service.  In general, any application which communicates
  143.    parallel and/or independent data structures may potentially be able
  144.    to profit from a partial order service.
  145.  
  146.    A second application that could benefit from a partial order service
  147.    involves remote or distributed databases.  Imagine the case where a
  148.    database user transmitting queries to a remote server expects objects
  149.    (or records) to be returned in some order, although not necessarily
  150.    total order.  For example a user writing an SQL data query might
  151.    specify this with the "order by" clause.  There exist today a great
  152.    number of commercial implementations of distributed databases which
  153.    utilize - and thus are penalized by - an ordered delivery service.
  154.  
  155.    Currently these applications must use and pay for a fully
  156.    ordered/fully reliable service even though they do not need it.  The
  157.    introduction of partial services allows applications to lower the
  158.    demanded quality of service (QOS) of the communication assuming that
  159.    such a service is more efficient and less costly.  In effect, a
  160.    partial order extends the service level from two extremes - ordered
  161.    and unordered - to a range of discreet values encompassing both of
  162.    the extremes and all possible partial orderings in between.  A
  163.    similar phenomenon is demonstrated in the area of reliability.
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170. Connolly, Amer & Conrad                                         [Page 3]
  171.  
  172. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  173.  
  174.  
  175.    It is worth mentioning that a TCP implementation providing a partial
  176.    order service, as described here, would be able to communicate with a
  177.    non-partial order implementation simply by recognizing this fact at
  178.    connection establishment - hence this extension is backward
  179.    compatible with earlier versions of TCP.  Furthermore, it is
  180.    conceivable for a host to support the sending-half (or receiving-
  181.    half) of a partial order connection alone to reduce the size of the
  182.    TCP as well as the effort involved in the implementation.  Similar
  183.    "levels of conformance" have been proposed in other internet
  184.    extensions such as [Dee89] involving IP multicasting.
  185.  
  186.    This RFC proceeds as follows.  The principles of partial order
  187.    delivery, published in [ACCD93a], are presented in Section 2.  The
  188.    notion of partial reliability, published in [ACCD93b], is introduced
  189.    in Section 3 followed by an explanation of "reliability classes".
  190.    Then, the practical issues involved with setting up and maintaining a
  191.    Partial Order Connection (POC) within a TCP framework are addressed
  192.    in Section 4 looking first at connection establishment, and then
  193.    discussing the sender's role and the receiver's role.  Section 5
  194.    provides insights into the expected performance improvements of a
  195.    partial order service over an ordered service and Section 6 discusses
  196.    some future directions.  Concluding remarks are given in Section 7.
  197.  
  198. 2. Partial Order Delivery
  199.  
  200.    Partial order services are needed and can be employed as soon as a
  201.    complete ordering is not mandatory.  When two objects can be
  202.    delivered in either order, there is no need to use an ordered service
  203.    that must delay delivery of the second one transmitted until the
  204.    first arrives as the following examples demonstrate.
  205.  
  206. 2.1 Example 1: Remote Database
  207.  
  208.    Simpson's Sporting Goods (SSG) has recently installed a state-of-
  209.    the-art enterprise-wide network.  Their first "network application"
  210.    is a client/server SQL database with the following four records,
  211.    numbered {1 2 3 4} for convenience:
  212.  
  213.          SALESPERSON    LOCATION           CHARGES    DESCRIPTION
  214.          -------------  -----------------  ---------  -----------------
  215.       1  Anderson       Atlanta, GA        $4,200     Camping Gear
  216.       2  Baker          Boston, MA           $849     Camping Gear
  217.       3  Crowell        Boston, MA         $9,500     Sportswear
  218.       4  Dykstra        Wash., DC          $1,000     Sportswear
  219.  
  220.    SSG employees running the client-side of the application can query
  221.    the database server from any location in the enterprise net using
  222.    standard SQL commands and the results will be displayed on their
  223.  
  224.  
  225.  
  226. Connolly, Amer & Conrad                                         [Page 4]
  227.  
  228. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  229.  
  230.  
  231.    screen.  From the employee's perspective, the network is completely
  232.    reliable and delivers data (records) in an order that conforms to
  233.    their SQL request.  In reality though, it is the transport layer
  234.    protocol which provides the reliability and order on top of an
  235.    unreliable network layer - one which introduces loss, duplication,
  236.    and disorder.
  237.  
  238.    Consider the four cases in Figure 1 - in the first query (1.a),
  239.    ordered by SALESPERSON, the records have only one acceptable order at
  240.    the destination, 1,2,3,4.  This is evident due to the fact that there
  241.    are four distinct salespersons.  If record 2 is received before
  242.    record 1 due to a network loss during transmission, the transport
  243.    service can not deliver it and must therefore buffer it until record
  244.    1 arrives.  An ordered service, also referred to as a virtual circuit
  245.    or FIFO channel, provides the desired level of service in this case.
  246.  
  247.    At the other extreme, an unordered service is motivated in Figure 1.d
  248.    where the employee has implicitly specified that any ordering is
  249.    valid simply by omitting the "order by" clause.  Here any of 4! = 24
  250.    delivery orderings would satisfy the application, or from the
  251.    transport layer's point of view, all records are immediately
  252.    deliverable as soon as they arrive from the network.  No record needs
  253.    to buffered should it arrive out of sequential order.  As notation, 4
  254.    ordered objects are written 1;2;3;4 and 4 unordered objects are
  255.    written using a parallel operator: 1||2||3||4.
  256.  
  257.    Figures 1.b and 1.c demonstrate two possible partial orders that
  258.    permit 2 and 4 orderings respectively at the destination.  Using the
  259.    notation just described, the valid orderings for the query in 1.b are
  260.    specified as 1;(2||3);4, which is to say that record 1 must be
  261.    delivered first followed by record 2 and 3 in either order followed
  262.    by record 4.  Likewise, the ordering for 1.c is (1||2);(3||4).  In
  263.    these two cases, an ordered service is too strict and an unordered
  264.    service is not strict enough.
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282. Connolly, Amer & Conrad                                         [Page 5]
  283.  
  284. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  285.  
  286.  
  287.    +-----------------------------------------------------------------+
  288.    |    SELECT SALESPERSON, LOCATION, CHARGES, DESCRIPTION           |
  289.    |    FROM BILLING_TABLE                                           |
  290.    |                                                                 |
  291.    |    SALESPERSON    LOCATION           CHARGES    DESCRIPTION     |
  292.    |    -------------  -----------------  ---------  --------------- |
  293.    | 1  Anderson       Atlanta, GA        $4,200     Camping Gear    |
  294.    | 2  Baker          Boston, MA           $849     Camping Gear    |
  295.    | 3  Crowell        Boston, MA         $9,500     Sportswear      |
  296.    | 4  Dykstra        Wash., DC          $1,000     Sportswear      |
  297.    +=================================================================+
  298.    |a -  ORDER BY SALESPERSON                                        |
  299.    |                                                                 |
  300.    |  1,2,3,4                                          1,2,3,4       |
  301.    |                                                                 |
  302.    | Sender ----------->   NETWORK   -------------->   Receiver      |
  303.    |                                              (1 valid ordering) |
  304.    +-----------------------------------------------------------------+
  305.    |b -  ORDER BY LOCATION                                           |
  306.    |                                                   1,2,3,4       |
  307.    |  1,2,3,4                                          1,3,2,4       |
  308.    |                                                                 |
  309.    | Sender ----------->   NETWORK   -------------->   Receiver      |
  310.    |                                             (2 valid orderings) |
  311.    +-----------------------------------------------------------------+
  312.    |c -  ORDER BY DESCRIPTION                                        |
  313.    |                                                   1,2,3,4       |
  314.    |                                                   2,1,3,4       |
  315.    | 1,2,3,4                                           1,2,4,3       |
  316.    |                                                   2,1,4,3       |
  317.    |                                                                 |
  318.    | Sender ----------->   NETWORK   -------------->   Receiver      |
  319.    |                                             (4 valid orderings) |
  320.    +-----------------------------------------------------------------+
  321.    |d - (no order by clause)                                         |
  322.    |                                                   1,2,3,4       |
  323.    |                                                   1,2,4,3       |
  324.    | 1,2,3,4                                             ...         |
  325.    |                                                   4,3,2,1       |
  326.    |                                                                 |
  327.    | Sender ----------->   NETWORK   -------------->   Receiver      |
  328.    |                                         (4!=24 valid orderings) |
  329.    +-----------------------------------------------------------------+
  330.       Figure 1: Ordered vs. Partial Ordered vs. Unordered Delivery
  331.  
  332.    It is vital for the transport layer to recognize the exact
  333.    requirements of the application and to ensure that these are met.
  334.    However, there is no inherent need to exceed these requirements; on
  335.  
  336.  
  337.  
  338. Connolly, Amer & Conrad                                         [Page 6]
  339.  
  340. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  341.  
  342.  
  343.    the contrary, by exceeding these requirements unecessary resources
  344.    are consumed.  This example application requires a reliable
  345.    connection - all records must eventually be delivered - but has some
  346.    flexibility when it comes to record ordering.
  347.  
  348.    In this example, each query has a different partial order.  In total,
  349.    there exist 16 different partial orders for the desired 4 records.
  350.    For an arbitrary number of objects N, there exist many possible
  351.    partial orders each of which accepts some number of valid orderings
  352.    between 1 and N!  (which correspond to the ordered and unordered
  353.    cases respectively).  For some classes of partial orders, the number
  354.    of valid orderings can be calculated easily, for others this
  355.    calculation is intractable.  An in-depth discussion on calculating
  356.    and comparing the number of orderings for a given partial order can
  357.    be found in [ACCD93a].
  358.  
  359.  
  360.  
  361.  
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371.  
  372.  
  373.  
  374.  
  375.  
  376.  
  377.  
  378.  
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394. Connolly, Amer & Conrad                                         [Page 7]
  395.  
  396. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  397.  
  398.  
  399. 2.2 Example 2: Multimedia
  400.  
  401.    A second example application that motivates a partial order service
  402.    is a multimedia broadcast involving video, audio and text components.
  403.    Consider an extended presentation of the evening news - extended to
  404.    include two distinct audio channels, a text subtitle and a closed-
  405.    captioned sign language video for the hearing impaired, in addition
  406.    to the normal video signal, as modeled by the following diagram.
  407.  
  408.             (left audio)                     (right audio)
  409.               +------+                         +------+
  410.               | ++++ |                         | ++++ |
  411.               | ++++ |                         | ++++ |
  412.               +------+                         +------+
  413.          ===================================================
  414.          I                                +---------------+I
  415.          I                                |               |I
  416.          I                                |  (hand signs) |I
  417.          I                                |               |I
  418.          I                                +---------------+I
  419.          I                                                 I
  420.          I                                                 I
  421.          I          (Main Video)                           I
  422.          I                                                 I
  423.          I                                                 I
  424.          I                                                 I
  425.          I                                                 I
  426.          I  +------------------------------------------+   I
  427.          I  |     (text subtitle)                      |   I
  428.          I  +------------------------------------------+   I
  429.          I                                                 I
  430.          ===================================================
  431.             Figure 2: Multimedia broadcast example
  432.  
  433.   The multimedia signals have differing characteristics.  The main video
  434.   signal may consist of full image graphics at a rate of 30 images/sec
  435.   while the video of hand signs requires a lower quality, say 10
  436.   images/sec.  Assume the audio signals are each divided into 60 sound
  437.   fragments/sec and the text object each second consists of either (1)
  438.   new text, (2) a command to keep the previous second of text, or (3) a
  439.   command for no subtitle.
  440.  
  441.   During a one-second interval of the broadcast, a sender transmits 30
  442.   full-motion video images, 10 closed-captioned hand sign images, 60
  443.   packets of a digitized audio signal for each of the audio streams and
  444.   a single text packet.  The following diagram then might represent the
  445.   characteristics of the multimedia presentation in terms of the media
  446.   types, the number of each, and their ordering.  Objects connected by a
  447.  
  448.  
  449.  
  450. Connolly, Amer & Conrad                                         [Page 8]
  451.  
  452. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  453.  
  454.  
  455.   horizontal line must be received in order, while those in parallel
  456.   have no inherent ordering requirement.
  457.  
  458. +----------------------------------------------------------------------+
  459. |                                                                      |
  460. |  |-o-|-o-|-o-|-o-|-o-|-o-|-o-|-o-|-o-...-o-|-o-|-o-|  right audio    |
  461. |  |   |   |   |   |   |   |   |   |         |   |   |  (60/sec)       |
  462. |  |   |   |   |   |   |   |   |   |         |   |   |                 |
  463. |  |-o-|-o-|-o-|-o-|-o-|-o-|-o-|-o-|-o-...-o-|-o-|-o-|  left audio     |
  464. |  |       |       |       |       |         |       |  (60/sec)       |
  465. |  |       |       |       |       |         |       |                 |
  466. |  |---o---|---o---|---o---|---o---|---...---|---o---|  normal video   |
  467. |  |                       |                         |  (30/sec)       |
  468. |  |                       |                         |                 |
  469. |  |-----------o-----------|--------o--...--------o--|  hand signs     |
  470. |  |                                                 |  (10/sec)       |
  471. |  |                                                 |                 |
  472. |  |-----------------------------o-----...-----------|  text           |
  473. |  |                                                 |  (1/sec)        |
  474. |                                                                      |
  475. +----------------------------------------------------------------------+
  476.           Figure 3: Object ordering in multimedia application
  477.  
  478.    Of particular interest to our discussion of partial ordering is the
  479.    fact that, while objects of a given media type generally must be
  480.    received in order, there exists flexibility between the separate
  481.    "streams" of multimedia data (where a "stream" represents the
  482.    sequence of objects for a specific media type).  Another significant
  483.    characteristic of this example is the repeating nature of the object
  484.    orderings.  Figure 3 represents a single, one-second, partial order
  485.    snapshot in a stream of possibly thousands of repeating sequential
  486.    periods of communication.
  487.  
  488.    It is assumed that further synchronization concerns in presenting the
  489.    objects are addressed by a service provided on top of the proposed
  490.    partial order service.  Temporal ordering for synchronized playback
  491.    is considered, for example, in [AH91, HKN91].
  492.  
  493. 2.3 Example 3: Windows Screen Refresh
  494.  
  495.    A third example to motivate a partial order service involves
  496.    refreshing a workstation screen/display containing multiple windows
  497.    from a remote source.  In this case, objects (icons, still or video
  498.    images) that do not overlap have a "parallel" relationship (i.e.,
  499.    their order of refreshing is independent) while overlapping screen
  500.    objects have a "sequential" relationship and should be delivered in
  501.    order.  Therefore, the way in which the windows overlap induces a
  502.    partial order.
  503.  
  504.  
  505.  
  506. Connolly, Amer & Conrad                                         [Page 9]
  507.  
  508. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  509.  
  510.  
  511.    Consider the two cases in Figure 4.  A sender wishes to refresh a
  512.    remote display that contains four active windows (objects) named {1 2
  513.    3 4}.  Assume the windows are transmitted in numerical order and the
  514.    receiving application refreshes windows as soon as the transport
  515.    service delivers them.  If the windows are configured as in Figure
  516.    4a, then there exist two different orderings for redisplay, namely
  517.    1,2,3,4 or 1,3,2,4.  If window 2 is received before window 1, the
  518.    transport service cannot deliver it or an incorrect image will be
  519.    displayed.  In Figure 4b, the structure of the windows results in six
  520.    possible orderings - 1,2,3,4 or 1,3,2,4 or 1,3,4,2 or 3,4,1,2 or
  521.    3,1,4,2 or 3,1,2,4.
  522.  
  523.        +================================+============================+
  524.        |a       +-----------+           |b   +----------+            |
  525.        |        | 1         |           |    | 1        |            |
  526.        |        |           |           |    |     +----------+      |
  527.        |  +---------+    +----------+   |    +-----| 2        |      |
  528.        |  | 2       |----| 3        |   |          |          |      |
  529.        |  |     +-----------+       |   |          +----------+      |
  530.        |  |     | 4         |       |   |    +----------+            |
  531.        |  +-----|           |-------+   |    | 3        |            |
  532.        |        |           |           |    |      +----------+     |
  533.        |        +-----------+           |    +------| 4        |     |
  534.        |                                |           |          |     |
  535.        |                                |           +----------+     |
  536.        |                                |                            |
  537.        |        1;(2||3);4              |       (1;2)||(3;4)         |
  538.        +================================+============================+
  539.                      Figure 4: Window screen refresh
  540.  
  541. 2.4 Potential Savings
  542.  
  543.    In each of these examples, the valid orderings are strictly dependent
  544.    upon, and must be specified by the application.  Intuitively, as the
  545.    number of acceptable orderings increases, the amount of resources
  546.    utilized by a partial order transport service, in terms of buffers
  547.    and retransmissions, should decrease as compared to a fully ordered
  548.    transport service thus also decreasing the overall cost of the
  549.    connection.  Just how much lower will depend largely upon the
  550.    flexibility of the application and the quality of the underlying
  551.    network.
  552.  
  553.    As an indication of the potential for improved service, let us
  554.    briefly look at the case where a database has the following 14
  555.    records.
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562. Connolly, Amer & Conrad                                        [Page 10]
  563.  
  564. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  565.  
  566.  
  567.           SALESPERSON    LOCATION           CHARGES    DESCRIPTION
  568.           -------------  -----------------  ---------  ---------------
  569.        1  Anderson       Washington          $4,200    Camping Gear
  570.        2  Anderson       Philadelphia        $2,000    Golf Equipment
  571.        3  Anderson       Boston                $450    Bowling shoes
  572.        4  Baker          Boston                $849    Sportswear
  573.        5  Baker          Washington          $3,100    Weights
  574.        6  Baker          Washington           $2000    Camping Gear
  575.        7  Baker          Atlanta               $290    Baseball Gloves
  576.        8  Baker          Boston              $1,500    Sportswear
  577.        9  Crowell        Boston              $9,500    Camping Gear
  578.       10  Crowell        Philadelphia        $6,000    Exercise Bikes
  579.       11  Crowell        New York            $1,500    Sportswear
  580.       12  Dykstra        Atlanta             $1,000    Sportswear
  581.       13  Dykstra        Dallas             $15,000    Rodeo Gear
  582.       14  Dykstra        Miami               $3,200    Golf Equipment
  583.  
  584.    Using formulas derived in [ACCD93a] one may calculate the total
  585.    number of valid orderings for any partial order that can be
  586.    represented in the notation mentioned previously.  For the case where
  587.    a user specifies "ORDER BY SALESPERSON", the partial order above can
  588.    be expressed as,
  589.  
  590.           (1||2||3);(4||5||6||7||8);(9||10||11);(12||13||14)
  591.  
  592.    Of the 14!=87,178,291,200 total possible combinations, there exist
  593.    25,920 valid orderings at the destination.  A service that may
  594.    deliver the records in any of these 25,920 orderings has a great deal
  595.    more flexibility than in the ordered case where there is only 1 valid
  596.    order for 14 objects.  It is interesting to consider the real
  597.    possibility of hundreds or even thousands of objects and the
  598.    potential savings in communication costs.
  599.  
  600.    In all cases, the underlying network is assumed to be unreliable and
  601.    may thus introduce loss, duplication, and disorder.  It makes no
  602.    sense to put a partial order service on top of a reliable network.
  603.    While the exact amount of unreliability in a network may vary and is
  604.    not always well understood, initial experimental research indicates
  605.    that real world networks, for example the service provided by the
  606.    Internet's IP level, "yield high losses, duplicates and reorderings
  607.    of packets" [AS93,BCP93].  The authors plan to conduct further
  608.    experimentation into measuring Internet network unreliability.  This
  609.    information would say a great deal about the practical merit of a
  610.    partial order service.
  611.  
  612.  
  613.  
  614.  
  615.  
  616.  
  617.  
  618. Connolly, Amer & Conrad                                        [Page 11]
  619.  
  620. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  621.  
  622.  
  623. 3. Reliability vs. Order
  624.  
  625.    While TCP avoids the loss of even a single object, in fact for many
  626.    applications, there exists a genuine ability to tolerate loss.
  627.    Losing one frame per second in a 30 frame per second video or losing
  628.    a segment of its accompanying audio channel is usually not a problem.
  629.    Bearing this in mind, it is of value to consider a quality of service
  630.    that combines a partial order with a level of tolerated loss (partial
  631.    reliability).  Traditionally there exist 4 services: reliable-
  632.    ordered, reliable-unordered, unreliable-ordered, and unreliable-
  633.    unordered. See Figure 5.  Reliable-ordered service (denoted by a
  634.    single point) represents the case where all objects are delivered in
  635.    the order transmitted.  File transfer is an example application
  636.    requiring such a service.
  637.  
  638.                    reliable-ordered                  reliable-unordered
  639.                       |                                 |
  640.                       |                                 |
  641.                       v                                 v
  642.           zero loss-->*---------------------------------*
  643.            min loss-->|<--                              |<--
  644.                 .     |                                 |
  645.                 .     |<--                              |<--
  646.                       |                                 |
  647.                       |<-- unreliable-                  |<-- unreliable-
  648.      RELIABILITY      |      ordered                    |     unordered
  649.                       |<--                              |<--
  650.                       |                                 |
  651.                       |<--                              |<--
  652.            max loss-->|                                 |
  653.                       +-+--+--+--+--+--+--+--+--+--+--+-+
  654.                    ordered       partial ordered     unordered
  655.  
  656.                                    ORDER
  657.  
  658.          Figure 5: Quality Of Service: Reliability vs. Order -
  659.                    Traditional Service Types
  660.  
  661.    In a reliable-unordered service (also a single point), all objects
  662.    must be delivered, but not necessarily according to the order
  663.    transmitted; in fact, any order will suffice.  Some transaction
  664.    processing applications such as credit card verification require such
  665.    a service.
  666.  
  667.    Unreliable-ordered service allows some objects to be lost.  Those
  668.    that are delivered, however, must arrive in relative order (An
  669.    "unreliable" service does not necessarily lose objects; rather, it
  670.    may do so without failing to provide its advertised quality of
  671.  
  672.  
  673.  
  674. Connolly, Amer & Conrad                                        [Page 12]
  675.  
  676. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  677.  
  678.  
  679.    service; e.g., the postal system provides an unreliable service).
  680.    Since there are varying degrees of unreliability, this service is
  681.    represented by a set of points in Figure 5.  An unreliable-ordered
  682.    service is applicable to packet-voice or teleconferencing
  683.    applications.
  684.  
  685.    Finally unreliable-unordered service allows objects to be lost and
  686.    delivered in any order.  This is the kind of service used for normal
  687.    e-mail (without acknowledgment receipts) and electronic announcements
  688.    or junk e-mail.
  689.  
  690.    As mentioned previously, the concept of a partial order expands the
  691.    order dimension from the two extremes of ordered and unordered to a
  692.    range of discrete possibilities as depicted in Figure 6.
  693.    Additionally, as will be discussed presently, the notion of
  694.    reliability is extended to allow for varying degrees of reliability
  695.    on a per-object basis providing even greater flexibility and improved
  696.    resource utilization.
  697.  
  698.                                 reliable-PO
  699.  
  700.                       |  |  |  |  |  |  |  |  |  |  |   |
  701.                       |  |  |  |  |  |  |  |  |  |  |   |
  702.                       v  v  v  v  v  v  v  v  v  v  v   v
  703.           zero loss-->*---------------------------------*
  704.            min loss-->| .  .  .  .  .  .  .  .  .  .  . |
  705.                 .     | .  .  .  .  .  .  .  .  .  .  . |
  706.                 .     | .  .  .  .  .  .  .  .  .  .  . |
  707.                       | .  .  .                 .  .  . |
  708.      RELIABILITY      | .  .  .  unreliable-PO  .  .  . |
  709.                       | .  .  .  .  .  .  .  .  .  .  . |
  710.                       | .  .  .  .  .  .  .  .  .  .  . |
  711.                       | .  .  .  .  .  .  .  .  .  .  . |
  712.                       | .  .  .  .  .  .  .  .  .  .  . |
  713.            max loss-->| .  .  .  .  .  .  .  .  .  .  . |
  714.                       +-+--+--+--+--+--+--+--+--+--+--+-+
  715.                    ordered       partial ordered     unordered
  716.  
  717.                                    ORDER
  718.  
  719.          Figure 6: Quality Of Service: Reliability vs. Order - Partial
  720.                    Order Service
  721.  
  722. 3.1 Reliability Classes
  723.  
  724.    When considering unreliable service, one cannot assume that all
  725.    objects are equal with regards to their reliability.  This
  726.    classification is reasonable if all objects are identical (e.g.,
  727.  
  728.  
  729.  
  730. Connolly, Amer & Conrad                                        [Page 13]
  731.  
  732. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  733.  
  734.  
  735.    video frames in a 30 frame/second film).  Many applications, such as
  736.    multimedia systems, however, often contain a variety of object types.
  737.    Thus three object reliability classes are proposed: BART-NL, BART-L,
  738.    and NBART-L.  Objects are assigned to one of these classes depending
  739.    on their temporal value as will be show presently.
  740.  
  741.    BART-NL objects must be delivered to the destination.  These objects
  742.    have temporal value that lasts for an entire established connection
  743.    and require reliable delivery (NL =  No Loss allowed).  An example of
  744.    BART-NL objects would be the database records in Example 2.1 or the
  745.    windows in the screen refresh in Example 2.3.  If all objects are of
  746.    type BART-NL, the service is reliable.  One possible way to assure
  747.    eventual delivery of a BART-NL object in a protocol is for the sender
  748.    to buffer it, start a timeout timer, and retransmit it if no ACK
  749.    arrives before the timeout.  The receiver in turn returns an ACK when
  750.    the object has safely arrived and been delivered (BART = Buffers,
  751.    ACKs, Retransmissions, Timers).
  752.  
  753.    BART-L objects are those that have temporal value over some
  754.    intermediate amount of time - enough to permit timeout and
  755.    retransmission, but not everlasting.  Once the temporal value of
  756.    these objects has expired, it is better to presume them lost than to
  757.    delay further the delivery pipeline of information.  One possibility
  758.    for deciding when an object's usefulness has expired is to require
  759.    each object to contain information defining its precise temporal
  760.    value [DS93].  An example of a BART-L object would be a movie
  761.    subtitle, sent in parallel with associated film images, which is
  762.    valuable any time during a twenty second film sequence.  If not
  763.    delivered sometime during the first ten seconds, the subtitle loses
  764.    its value and can be presumed lost.  These objects are buffered-
  765.    ACKed-retransmitted up to a certain point in time and then presumed
  766.    lost.
  767.  
  768.    NBART-L objects are those with temporal values too short to bother
  769.    timing out and retransmitting.  An example of a NBART-L object would
  770.    be a single packet of speech in a packetized phone conversation or
  771.    one image in a 30 image/sec film.  A sender transmits these objects
  772.    once and the service makes a best effort to deliver them.  If the one
  773.    attempt is unsuccessful, no further attempts are made.
  774.  
  775.    An obvious question comes to mind - what about NBART-NL objects?  Do
  776.    such objects exist?  The authors have considered the notion of
  777.    communicating an object without the use of BART and still being able
  778.    to provide a service without loss.  Perhaps with the use of forward
  779.    error correction this may become a viable alternative and could
  780.    certainly be included in the protocol.  However, for our purposes in
  781.    this document, only the first three classifications will be
  782.    considered.
  783.  
  784.  
  785.  
  786. Connolly, Amer & Conrad                                        [Page 14]
  787.  
  788. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  789.  
  790.  
  791.    While classic transport protocols generally treat all objects
  792.    equally, the sending and receiving functions of a protocol providing
  793.    partial order/partial reliability service will behave differently for
  794.    each class of object.  For example, a sender buffers and, if
  795.    necessary, retransmits any BART-NL or BART-L objects that are not
  796.    acknowledged within a predefined timeout period.  On the contrary,
  797.    NBART-L objects are forgotten as soon as they are transmitted.
  798.  
  799. 4. Partial Order Connection
  800.  
  801.    The implementation of a protocol that provides partial order service
  802.    requires, at a minimum, (1) communication of the partial ordering
  803.    between the two endpoints, and (2) dynamic evaluation of the
  804.    deliverability of objects as they arrive at the receiver.  In
  805.    addition, this RFC describes the mechanisms needed to (3) initiate a
  806.    connection, (4) provide varying degrees of reliability for the
  807.    objects being transmitted, and (5) improve buffer utilization at the
  808.    sender based on object reliability.
  809.  
  810.    Throughout the discussion of these issues, the authors use the
  811.    generic notion of "objects" in describing the service details.  Thus,
  812.    one of the underlying requirements of a partial order service is the
  813.    ability to handle such an abstraction (e.g., recognize object
  814.    boundaries).  The details of object management are implementation
  815.    dependent and thus are not specified in this RFC.  However, as this
  816.    represents a potential fundamental change to the TCP protocol, some
  817.    discussion is in order.
  818.  
  819.    At one extreme, it is possible to consider octets as objects and
  820.    require that the application specify the partial order accordingly
  821.    (octet by octet).  This likely would entail an inordinate amount of
  822.    overhead, processing each octet on an individual basis (literally
  823.    breaking up contiguous segments to determine which, if any, octets
  824.    are deliverable and which are not).  At the other extreme, the
  825.    transport protocol could maintain object atomicity regardless of size
  826.    - passing arbitrarily large data structures to IP for transmission.
  827.    At the sending side of the connection this would actually work since
  828.    IP is prepared to perform source fragmentation, however, there is no
  829.    guarantee that the receiving IP will be able to reassemble the
  830.    fragments!  IP relies on the TCP max segment size to prevent this
  831.    situation from occurring[LMKQ89].
  832.  
  833.    A more realistic approach given the existing IP constraints might be
  834.    to maintain the current notion of a TCP max segment size for the
  835.    lower-layer interface with IP while allowing a much larger object
  836.    size at the upper-layer interface.  Of course this presents some
  837.    additional complexities.  First of all, the transport layer will now
  838.    have to be concerned with fragmentation/reassembly of objects larger
  839.  
  840.  
  841.  
  842. Connolly, Amer & Conrad                                        [Page 15]
  843.  
  844. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  845.  
  846.  
  847.    than the max segment size and secondly, the increased object sizes
  848.    will require significantly more buffer space at the receiver if we
  849.    want to buffer the object until it arrives in entirety.
  850.    Alternatively, one may consider delivering "fragments" of an object
  851.    as they arrive as long as the ordering of the fragments is correct
  852.    and the application is able to process the fragments (this notion of
  853.    fragmented delivery is discussed further in Section 6).
  854.  
  855. 4.1 Connection Establishment
  856.  
  857.    By extending the transport paradigm to allow partial ordering and
  858.    reliability classes, a user application may be able to take advantage
  859.    of a more efficient data transport facility by negotiating the
  860.    optimal service level which is required - no more, no less.  This is
  861.    accomplished by specifying these variables as QOS parameters or, in
  862.    TCP terminology, as options to be included in the TCP header [Pos81].
  863.  
  864.    A TCP implementation that provides a partial order service requires
  865.    the use of two new TCP options.  The first is an enabling option
  866.    "POC-permitted" (Partial Order Connection Permitted) that may be used
  867.    in a SYN segment to request a partial order service.  The other is
  868.    the "POC-service-profile" option which is used periodically to
  869.    communicate the service characteristics.  This second option may be
  870.    sent only after successful transmission and acknowledgment of the
  871.    POC-permitted option.
  872.  
  873.    A user process issuing either an active or passive OPEN may choose to
  874.    include the POC-permitted option if the application can benefit from
  875.    the use of a partial order service and in fact, in cases where the
  876.    viability of such service is unknown, it is suggested that the option
  877.    be used and that the decision be left to the user's peer.
  878.  
  879.    For example, a multimedia server might issue a passive <SYN> with the
  880.    POC-permitted option in preparation for the connection by a remote
  881.    user.
  882.  
  883.    Upon reception of a <SYN> segment with the POC-permitted option, the
  884.    receiving user has the option to respond with a similar POC-permitted
  885.    indication or may reject a partial order connection if the
  886.    application does not warrant the service or the receiving user is
  887.    simply unable to provide such a service (e.g., does not recognize the
  888.    POC-permitted option).
  889.  
  890.    In the event that simultaneous initial <SYN> segments are exchanged,
  891.    the TCP will initiate a partial order connection only if both sides
  892.    include the POC-permitted option.
  893.  
  894.  
  895.  
  896.  
  897.  
  898. Connolly, Amer & Conrad                                        [Page 16]
  899.  
  900. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  901.  
  902.  
  903.    A brief example should help to demonstrate this procedure.  The
  904.    following notation (a slight simplification on that employed in RFC
  905.    793) will be used.  Each line is numbered for reference purposes.
  906.    TCP-A (on the left) will play the role of the receiver and TCP-B will
  907.    be the sender.  Right arrows  (-->) indicate departure of a TCP
  908.    segment from TCP-A to TCP-B, or arrival of a segment at B from A.
  909.    Left arrows indicate the reverse.  TCP states represent the state
  910.    AFTER the departure or arrival of the segment (whose contents are
  911.    shown in the center of the line).  Liberties are taken with the
  912.    contents of the segments where only the fields of interest are shown.
  913.  
  914.          TCP-A                                              TCP-B
  915.  
  916.       1. CLOSED                                             LISTEN
  917.  
  918.       2. SYN-SENT    --> <CTL=SYN><POC-perm>            --> SYN-RECEIVED
  919.  
  920.       3. ESTABLISHED <-- <CTL=SYN,ACK><POC-perm>        <-- SYN-RECEIVED
  921.  
  922.       4. ESTABLISHED --> <CTL=ACK>                      --> ESTABLISHED
  923.  
  924.         Figure 7. Basic 3-Way handshake for a partial order connection
  925.  
  926.    In line 1 of Figure 7, the sending user has already issued a passive
  927.    OPEN with the POC-permitted option and is waiting for a connection.
  928.    In line 2, the receiving user issues an active OPEN with the same
  929.    option which in turn prompts TCP-A to send a SYN segment with the
  930.    POC-permitted option and enter the SYN-SENT state.  TCP-B is able to
  931.    confirm the use of a PO connection and does so in line 3, after which
  932.    TCP-A enters the established state and completes the connection with
  933.    an ACK segment in line 4.
  934.  
  935.    In the event that either side is unable to provide partial order
  936.    service, the POC-permitted option will be omitted and normal TCP
  937.    processing will ensue.
  938.  
  939.    For completeness, the authors include the following specification for
  940.    both the POC-permitted option and the POC-service-profile option in a
  941.    format consistent with the TCP specification document [Pos81].
  942.  
  943.       TCP POC-permitted Option:
  944.  
  945.          Kind: 9  Length: - 2 bytes
  946.  
  947.              +-----------+-------------+
  948.              |  Kind=9   |  Length=2   |
  949.              +-----------+-------------+
  950.  
  951.  
  952.  
  953.  
  954. Connolly, Amer & Conrad                                        [Page 17]
  955.  
  956. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  957.  
  958.  
  959.       TCP POC-service-profile Option:
  960.  
  961.          Kind: 10  Length: 3 bytes
  962.  
  963.                                        1 bit        1 bit    6 bits
  964.              +----------+----------+------------+----------+--------+
  965.              |  Kind=10 | Length=3 | Start_flag | End_flag | Filler |
  966.              +----------+----------+------------+----------+--------+
  967.  
  968.    The first option represents a simple indicator communicated between
  969.    the two peer transport entities and needs no further explanation.
  970.    The second option serves to communicate the information necessary to
  971.    carry out the job of the protocol - the type of information which is
  972.    typically found in the header of a TCP segment - and raises some
  973.    interesting questions.
  974.  
  975.    Standard TCP maintains a 60-byte maximum header size on all segments.
  976.    The obvious intuition behind this rule is that one would like to
  977.    minimize the amount of overhead information present in each packet
  978.    while simultaneously increasing the payload, or data, section.  While
  979.    this is acceptable for most TCP connections today, a partial-order
  980.    service would necessarily require that significantly more control
  981.    information be passed between transport entities at certain points
  982.    during a connection.  Maintaining the strict interpretation of this
  983.    rule would prove to be inefficient.  If, for example, the service
  984.    profile occupied a total of 400 bytes (a modest amount as will be
  985.    confirmed in the next section), then one would have to fragment this
  986.    information across at least 10 segments, allocating 20 bytes per
  987.    segment for the normal TCP header.
  988.  
  989.    Instead, the authors propose that the service profile be carried in
  990.    the data section of the segment and that the 3-byte POC-service-
  991.    profile option described above be placed in the header to indicate
  992.    the presence of this information.  Upon reception of such a segment,
  993.    the TCP extracts the service profile and uses it appropriately as
  994.    will be discussed in the following sections.
  995.  
  996.    The option itself, as shown here, contains two 1-bit flags necessary
  997.    to handle the case where the service profile does not fit in a single
  998.    TCP segment.  The "Start_flag" indicates that the information in the
  999.    data section represents the beginning of the service profile and the
  1000.    "End_flag" represents the converse.  For service profiles which fit
  1001.    completely in a single segment, both flags will be set to 1.
  1002.    Otherwise, the Start_flag is set in the initial segment and the
  1003.    End_flag in the final segment allowing the peer entity to reconstrcut
  1004.    the entire service profile (using the normal sequence numbers in the
  1005.    segment header).  The "Filler" field serves merely to complete the
  1006.    third byte of the option.
  1007.  
  1008.  
  1009.  
  1010. Connolly, Amer & Conrad                                        [Page 18]
  1011.  
  1012. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  1013.  
  1014.  
  1015.    Note that the length of the service profile may vary during the
  1016.    connection as the order or reliability requirements of the user
  1017.    change but this length must not exceed the buffering ability of the
  1018.    peer TCP entity since the entire profile must be stored.  The exact
  1019.    makeup of this data structure is presented in Section 4.2.
  1020.  
  1021. 4.2 Data Transmission
  1022.  
  1023.    Examining the characteristics of a partial order TCP in chronological
  1024.    fashion, one would start off with the establishment of a connection
  1025.    as described in Section 4.1.  After which, although both ends have
  1026.    acknowledged the acceptability of partial order transport, neither
  1027.    has actually begun a partial order transmission - in other words,
  1028.    both the sending-side and the receiving-side are operating in a
  1029.    normal, ordered-reliable mode.  For the subsequent discussion, an
  1030.    important distinction is made in the terms sending-side and
  1031.    receiving-side which refer to the data flow from the sender and that
  1032.    from the receiver, respectively.
  1033.  
  1034.    For the partial ordering to commence, the TCP must be made aware of
  1035.    the acceptable object orderings and reliability for both the send-
  1036.    side and receive-side of the connection for a given set of objects
  1037.    (hereafter referred to as a "period").  This information is contained
  1038.    in the service profile and it is the responsibility of the user
  1039.    application to define this profile.  Unlike standard TCP where
  1040.    applications implicitly define a reliable, ordered profile; with
  1041.    partial order TCP, the application must explicity define a profile.
  1042.  
  1043.    The representation of the service profile is one of the concerns for
  1044.    the transport protocol.  It would be useful if the TCP could encode a
  1045.    partial ordering in as few bits as possible since these bits will be
  1046.    transmitted to the destination each time the partial order changes.
  1047.    A matrix representation appears to be well-suited to encoding the
  1048.    partial order and a vector has been proposed to communicate and
  1049.    manage the reliability aspects of the service.  Temporal values may
  1050.    be included within the objects themselves or may be defined as a
  1051.    function of the state of the connection [DS93].  Using these data
  1052.    structures, the complete service profile would include (1) a partial
  1053.    order matrix, (2) a reliability vector and (3) an object_sizes vector
  1054.    which represents the size of the objects in octets (see
  1055.    [ACCD93a,CAC93] for a discussion on alternative structures for these
  1056.    variables).
  1057.  
  1058.    Throughout this section, we use the following service profile as a
  1059.    running example.  Shown here is a partial order matrix and graphical
  1060.    representation for a simple partial order with 6 objects -
  1061.    ((1;2)||(3;4)||5);6.  In the graphical diagram, arrows (-->) denote
  1062.    sequential order and objects in parallel can be delivered in either
  1063.  
  1064.  
  1065.  
  1066. Connolly, Amer & Conrad                                        [Page 19]
  1067.  
  1068. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  1069.  
  1070.  
  1071.    order.  So in this example, object 2 must be delivered after object
  1072.    1, object 4 must be delivered after object 3, and object 6 must be
  1073.    delivered after objects 1 through 5 have all been delivered.  Among
  1074.    the 6 objects, there are 30 valid orderings for this partial order
  1075.    (each valid ordering is known as a linear extension of the partial
  1076.    order).
  1077.  
  1078.                 1 2 3 4 5 6
  1079.               +-------------+
  1080.             1 | - 1 0 0 0 1 |         |               |       |
  1081.             2 | - - 0 0 0 1 |         |-->1-->|-->2-->|       |
  1082.             3 | - - - 1 0 1 |         |               |       |
  1083.             4 | - - - - 0 1 |         |-->3-->|-->4-->|-->6-->|
  1084.             5 | - - - - - 1 |         |               |       |
  1085.             6 | - - - - - - |         |------>5------>|       |
  1086.               +-------------+         |               |       |
  1087.  
  1088.                  PO Matrix                 PO Graph
  1089.  
  1090.  
  1091.    In the matrix, a 1 in row i of column j denotes that object i must be
  1092.    delivered before object j.  Note that if objects are numbered in any
  1093.    way such that 1,2,3,...,N is a valid ordering, only the upper right
  1094.    triangle of the transitively closed matrix is needed [ACCD93a].
  1095.    Thus, for N objects, the partial order can be encoded in (N*(N-1)/2)
  1096.    bits.
  1097.  
  1098.    The reliability vector for the case where reliability classes are
  1099.    enumerated types such as {BART-NL=1, BART-L=2, NBART-L = 3} and all
  1100.    objects are BART-NL would simply be, <1, 1, 1, 1, 1, 1>.  Together
  1101.    with the object_sizes vector, the complete service profile is
  1102.    described.
  1103.  
  1104.    This information must be packaged and communicated to the sending TCP
  1105.    before the first object is transmitted using a TCP service primitive
  1106.    or comparable means depending upon the User/TCP interface.  Once the
  1107.    service profile has been specified to the TCP, it remains in effect
  1108.    until the connection is closed or the sending user specifies a new
  1109.    service profile.  In the event that the largest object size can not
  1110.    be processed by the receiving TCP, the user application is informed
  1111.    that the connection cannot be maintained and the normal connection
  1112.    close procedure is followed.
  1113.  
  1114.    Typically, as has been described here, the service profile definition
  1115.    and specification is handled at the sending end of the connection,
  1116.    but there could be applications (such as the screen refresh) where
  1117.    the receiving user has this knowledge.  Under these circumstances the
  1118.    receiving user is obliged to transmit the object ordering on the
  1119.  
  1120.  
  1121.  
  1122. Connolly, Amer & Conrad                                        [Page 20]
  1123.  
  1124. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  1125.  
  1126.  
  1127.    return side of the connection (e.g., when making the request for a
  1128.    screen refresh) and have the sender interpret this data to be used on
  1129.    the send side of the connection.
  1130.  
  1131.    Requiring that the sending application specify the service profile is
  1132.    not an arbitrary choice.  To ensure proper object identification, the
  1133.    receiving application must transmit the new object numbering to the
  1134.    sending application (not the sending transport layer).  Since the
  1135.    sending application must receive this information in any case, it
  1136.    simplifies matters greatly to require that the sending application be
  1137.    the only side that may specify the service profile to the transport
  1138.    layer.
  1139.  
  1140.    Consider now the layered architecture diagram in Figure 8 and assume
  1141.    that a connection already is established.  Let us now say that UserA
  1142.    specifies the service profile for the sending-side of the connection
  1143.    via its interface with TCP-A. TCP-A places the profile in the header
  1144.    of one or more data packets (depending upon the size of the service
  1145.    profile, the profile may require several packets), sets the POC-
  1146.    service-profile option and passes it to IP for transmission over the
  1147.    network.  This packet must be transmitted reliably, therefore TCP-A
  1148.    buffers it and starts a normal retransmit timer.  Subsequently, the
  1149.    service profile arrives at the destination node and is handed to
  1150.    TCP-B (as indicated by the arrows in Figure 8).  TCP-B returns an
  1151.    acknowledgment and immediately adopts the service profile for one
  1152.    direction of data flow over the connection.  When the acknowledgment
  1153.    arrives back at TCP-A, the cycle is complete and both sides are now
  1154.    able to use the partial order service.
  1155.  
  1156.                  +--------+                +----------+
  1157.         Service  | UserA  |                | UserB    |
  1158.         Profile  +--------+                +----------+
  1159.           |          |                           |
  1160.           |          |                           |
  1161.           v          |                           |
  1162.           |      +---------+               +-----------+    Service
  1163.           |      |  TCP-A  |               |  TCP-B    |    Profile
  1164.           |      +---------+               +-----------+       ^
  1165.           |          |                           |             |
  1166.           |          |                           |             |
  1167.           |          |                           |             |
  1168.           |      +---------------------------------------+     |
  1169.           v      |                                       |     |
  1170.           ------>| ---- Service Profile ------------->   |----->
  1171.                  +---------------------------------------+
  1172.  
  1173.           Figure 8. Layered Communication Architecture
  1174.  
  1175.  
  1176.  
  1177.  
  1178. Connolly, Amer & Conrad                                        [Page 21]
  1179.  
  1180. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  1181.  
  1182.  
  1183.    Note that one of the TCP entities learns of the profile via its user
  1184.    interface, while the other TCP entity is informed via its network
  1185.    interface.
  1186.  
  1187.    For the remaining discussions, we will assume that a partial order
  1188.    profile has been successfully negotiated for a single direction of
  1189.    the connection (as depicted in Figure 8) and that we may now speak of
  1190.    a "sending TCP" (TCP-A) and a "receiving TCP" (TCP-B).  As such,
  1191.    TCP-A refers to the partial order data stream as the "send-side" of
  1192.    the connection, while TCP-B refers to the same data stream as the
  1193.    "receive-side".
  1194.  
  1195.    Having established a partial order connection, the communicating TCPs
  1196.    each have their respective jobs to perform to ensure proper data
  1197.    delivery.  The sending TCP ascertains the object ordering and
  1198.    reliability from the service profile and uses this information in its
  1199.    buffering/retransmission policy.  The receiver modifications are more
  1200.    significant, particularly the issues of object deliverability and
  1201.    reliability.  And both sides will need to redefine the notion of
  1202.    window management.  Let us look specifically at how each side of the
  1203.    TCP connection is managed under this new paradigm.
  1204.  
  1205. 4.2.1 Sender
  1206.  
  1207.    The sender's concerns are still essentially four-fold - transmitting
  1208.    data, managing buffer space, processing acknowledgments and
  1209.    retransmitting after a time-out - however, each takes on a new
  1210.    meaning in a partial order service.  Additionally, the management of
  1211.    the service profile represents a fifth duty not previously needed.
  1212.  
  1213.    Taking a rather simplistic view, normal TCP output processing
  1214.    involves (1) setting up the header, (2) copying user data into the
  1215.    outgoing segment, (3) sending the segment, (4) making a copy in a
  1216.    send buffer for retransmission and (5) starting a retransmission
  1217.    timer.  The only difference with a partial order service is that the
  1218.    reliability vector must be examined to determine whether or not to
  1219.    buffer the object and start a timer - if the object is classified as
  1220.    NBART-L, then steps 4 and 5 are omitted.
  1221.  
  1222.    Buffer management at the sending end of a partial order connection is
  1223.    dependent upon the object reliability class and the object size.
  1224.    When transmitting NBART-L objects the sender need not store the data
  1225.    for later possible retransmission since NBART-L objects are never
  1226.    retransmitted.  The details of buffer management - such as whether to
  1227.    allocate fixed-size pools of memory, or perhaps utilize a dynamic
  1228.    heap allocation strategy - are left to the particular system
  1229.    implementer.
  1230.  
  1231.  
  1232.  
  1233.  
  1234. Connolly, Amer & Conrad                                        [Page 22]
  1235.  
  1236. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  1237.  
  1238.  
  1239.    Acknowledgment processing remains essentially intact -
  1240.    acknowledgments are cumulative and specify the peer TCP's window
  1241.    advertisement.  However, determination of this advertisement is no
  1242.    longer a trivial process dependent only upon the available buffer
  1243.    space (this is discussed further in Section 4.2.2).  Moreover, it
  1244.    should be noted that the introduction of partial ordering and partial
  1245.    reliability presents several new and interesting alternatives for the
  1246.    acknowledgment policy.  The authors are investigating several of
  1247.    these strategies through a simulation model and have included a brief
  1248.    discussion of these issues in Section 6.
  1249.  
  1250.    The retransmit function of the TCP is entirely unchanged and is
  1251.    therefore not discussed further.
  1252.  
  1253.    For some applications, it may be possible to maintain the same
  1254.    partial order for multiple periods (e.g., the application repeats the
  1255.    same partial order).  In the general case, however, the protocol must
  1256.    be able to change the service profile during an existing connection.
  1257.    When a change in the service profile is requested, the sending TCP is
  1258.    obliged to complete the processing of the current partial order
  1259.    before commencing with a new one.  This ensures consistency between
  1260.    the user applications in the event of a connection failure and
  1261.    simplifies the protocol (future study is planned to investigate the
  1262.    performance improvement gained by allowing concurrent different
  1263.    partial orders).  The current partial order is complete when all
  1264.    sending buffers are free.  Then negotiation  of the new service
  1265.    profile is performed in the same manner as with the initial profile.
  1266.  
  1267.    Combining these issues, we propose the following simplified state
  1268.    machine for the protocol (connection establishment and tear down
  1269.    remains the same and is not show here).
  1270.  
  1271.                (1)Send Request                            (5)Ack Arrival
  1272.                   +------+                                +-----------+
  1273.                   |      |                                |           |
  1274.                   |      V                                |           |
  1275.                 +----------+  (4) New PO Profile    +----------+      |
  1276.           +---->|          |----------------------->|   PO     |<-----+
  1277.           |     |  ESTAB   |                        |          |
  1278.       (2) |     |          |                        |  SETUP   |
  1279.       Ack +-----|          |<-----------------------|          |<-----+
  1280.       Arrival   +----------+  (7)PO Setup Complete  +----------+      |
  1281.                   ^      |                                  |         |
  1282.                   |      |                                  |         |
  1283.                   +------+                                  +---------+
  1284.                 (3)Timeout                                  (6)Timeout
  1285.  
  1286.  
  1287.  
  1288.  
  1289.  
  1290. Connolly, Amer & Conrad                                        [Page 23]
  1291.  
  1292. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  1293.  
  1294.  
  1295.    Event (1) - User Makes a Data Send Request
  1296.    =========
  1297.       If Piggyback Timer is set then
  1298.            cancel piggyback timer
  1299.       Package and send the object (with ACK for receive-side)
  1300.       If object type = (BART-L,BART-NL) then
  1301.            Store the object and start a retransmit timer
  1302.       If sending window is full then
  1303.            Block Event (1) - allow no further send requests from user
  1304.  
  1305.    Event (2) - ACK Arrives
  1306.    =========
  1307.       If ACKed object(s) is buffered then
  1308.            Release the buffer(s) and stop the retransmit timer(s)
  1309.       Extract the peer TCP's window advertisement
  1310.       If remote TCP's window advertisement > sending window then
  1311.            Enable Event (1)
  1312.       If remote TCP's window advertisement <= sending window then
  1313.            Block Event (1) - allow no further send requests from user
  1314.       Adjust sending window based on received window advertisement
  1315.  
  1316.    Event (3) - Retransmit Timer Expires
  1317.    =========
  1318.       If Piggyback Timer is set then
  1319.            cancel piggyback timer
  1320.       Re-transmit the segment (with ACK for receive-side)
  1321.       Restart the timer
  1322.  
  1323.    Event (4) - PO Service Profile Arrives at the User Interface
  1324.    =========
  1325.       Transition to the PO SETUP state
  1326.       Store the Send-side PO service profile
  1327.       Package the profile into 1 or more segments, setting the
  1328.            POC-Service-Profile option on each
  1329.       If Piggyback Timer is set then
  1330.            cancel piggyback timer
  1331.       Send the segment(s) (with ACK for receive-side)
  1332.       Store the segment(s) and start a retransmit timer
  1333.  
  1334.    Event (5) - ACK Arrival
  1335.    =========
  1336.       If ACKed object(s) is buffered then
  1337.            Release the buffer(s) and stop the retransmit timer(s)
  1338.       Extract the peer TCP's window advertisement
  1339.       If all objects from previous service profile have been ACKed and
  1340.       the new service profile has been ACKed then enable Event (7)
  1341.  
  1342.  
  1343.  
  1344.  
  1345.  
  1346. Connolly, Amer & Conrad                                        [Page 24]
  1347.  
  1348. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  1349.  
  1350.  
  1351.    Event (6) - Retransmit Timer Expires
  1352.    =========
  1353.       If Piggyback Timer is set then
  1354.            cancel piggyback timer
  1355.       Re-transmit the segment (with ACK for receive-side)
  1356.       Restart the timer
  1357.  
  1358.    Event (7) - PO Setup Completed
  1359.    =========
  1360.       Transition to the ESTAB state and begin processing new service
  1361.       profile
  1362.  
  1363. 4.2.2 Receiver
  1364.  
  1365.    The receiving TCP has additional decisions to make involving object
  1366.    deliverability, reliability and window management.  Additionally, the
  1367.    service profile must be established (and re-established) periodically
  1368.    and some special processing must be performed at the end of each
  1369.    period.
  1370.  
  1371.    When an object arrives, the question is no longer, "is this the next
  1372.    deliverable object?", but rather, "is this ONE OF the next
  1373.    deliverable objects?"  Hence, it is convenient to think of a
  1374.    "Deliverable Set" of objects with a partial order protocol.  To
  1375.    determine the elements of this set and answer the question of
  1376.    deliverability, the receiver relies upon the partial order matrix
  1377.    but, unlike the sender, the receiver dynamically updates the matrix
  1378.    as objects are processed thus making other objects (possibly already
  1379.    buffered objects) deliverable as well.  A check of the object type
  1380.    also must be performed since BART-NL and BART-L objects require an
  1381.    ACK to be returned to the sender but NBART-L do not.  Consider our
  1382.    example from the previous section.
  1383.  
  1384.                 1 2 3 4 5 6
  1385.               +-------------+
  1386.             1 | - 1 0 0 0 1 |         |               |       |
  1387.             2 | - - 0 0 0 1 |         |-->1-->|-->2-->|       |
  1388.             3 | - - - 1 0 1 |         |               |       |
  1389.             4 | - - - - 0 1 |         |-->3-->|-->4-->|-->6-->|
  1390.             5 | - - - - - 1 |         |               |       |
  1391.             6 | - - - - - - |         |------>5------>|       |
  1392.               +-------------+         |               |       |
  1393.  
  1394.                  PO Matrix                 PO Graph
  1395.  
  1396.    When object 5 arrives, the receiver scans column 5, finds that the
  1397.    object is deliverable (since there are no 1's in the column) and
  1398.    immediately delivers the object to the user application. Then, the
  1399.  
  1400.  
  1401.  
  1402. Connolly, Amer & Conrad                                        [Page 25]
  1403.  
  1404. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  1405.  
  1406.  
  1407.    matrix is updated to remove the constraint of any object whose
  1408.    delivery depends on object 5 by clearing all entries of row 5.  This
  1409.    may enable other objects to be delivered (for example, if object 2 is
  1410.    buffered then the delivery of object 1 will make object 2
  1411.    deliverable).  This leads us to the next issue - delivery of stored
  1412.    objects.
  1413.  
  1414.    In general, whenever an object is delivered, the buffers must be
  1415.    examined to see if any other stored object(s) becomes deliverable.
  1416.    CAC93 describes an efficient algorithm to implement this processing
  1417.    based on traversing the precedence graph.
  1418.  
  1419.    Consideration of object reliability is interesting.  The authors have
  1420.    taken a polling approach wherein a procedure is executed
  1421.    periodically, say once every 100 milliseconds, to evaluate the
  1422.    temporal value of outstanding objects on which the destination is
  1423.    waiting.  Those whose temporal value has expired (i.e. which are no
  1424.    longer useful as defined by the application) are "declared lost" and
  1425.    treated in much the same manner as delivered objects - the matrix is
  1426.    updated, and if the object type is BART-L, an ACK is sent.  Any
  1427.    objects from the current period which have not yet been delivered or
  1428.    declared lost are candidates for the "Terminator" as the procedure is
  1429.    called.  The Terminator's criterion is not specifically addressed in
  1430.    this RFC, but one example might be for the receiving user to
  1431.    periodically pass a list of no-longer-useful objects to TCP-B.
  1432.  
  1433.    Another question which arises is, "How does one calculate the send
  1434.    and receive windows?"  With a partial order service, these windows
  1435.    are no longer contiguous intervals of objects but rather sets of
  1436.    objects.  In fact, there are three sets which are of interest to the
  1437.    receiving TCP one of which has already been mentioned - the
  1438.    Deliverable Set.  Additionally, we can think of the Bufferable Set
  1439.    and the Receivable Set.  Some definitions are in order:
  1440.  
  1441.       Deliverable Set: objects which can be immediately passed up to
  1442.            the user.
  1443.  
  1444.       Buffered Set: objects stored in a buffer awaiting delivery.
  1445.  
  1446.       Bufferable Set: objects which can be stored but not immediately
  1447.            delivered (due to some ordering constraint).
  1448.  
  1449.       Receivable Set: union of the Deliverable Set and the Bufferable
  1450.            Set (which are disjoint) - intuitively, all objects which
  1451.            are "receivable" must be either "deliverable" or
  1452.            "bufferable".
  1453.  
  1454.  
  1455.  
  1456.  
  1457.  
  1458. Connolly, Amer & Conrad                                        [Page 26]
  1459.  
  1460. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  1461.  
  1462.  
  1463.    The following example will help to illustrate these sets.  Consider
  1464.    our simple service profile from earlier for the case where the size
  1465.    of each object is 1 MByte and the receiver has only 2 MBytes of
  1466.    buffer space (enough for 2 objects).  Define a boolean vector of
  1467.    length N (N = number of objects in a period) called the Processed
  1468.    Vector which is used to indicate which objects from the current
  1469.    period have been delivered or declared lost.  Initially, all buffers
  1470.    are empty and the PO Matrix and Processed Vector are as shown here,
  1471.  
  1472.                 1 2 3 4 5 6
  1473.               +-------------+
  1474.             1 | - 1 0 0 0 1 |
  1475.             2 | - - 0 0 0 1 |
  1476.             3 | - - - 1 0 1 |
  1477.             4 | - - - - 0 1 |
  1478.             5 | - - - - - 1 |      [ F F F F F F ]
  1479.             6 | - - - - - - |        1 2 3 4 5 6
  1480.               +-------------+
  1481.  
  1482.                  PO Matrix        Processed Vector
  1483.  
  1484.    From the PO Matrix, it is clear that the Deliverable Set =
  1485.    {(1,1),(1,3),(1,5)}, where (1,1) refers to object #1 from period #1,
  1486.    asssuming that the current period is period #1.
  1487.  
  1488.    The Bufferable Set, however, depends upon how one defines bufferable
  1489.    objects.  Several approaches are possible.  The authors' initial
  1490.    approach to determining the Bufferable Set can best be explained in
  1491.    terms of the following rules,
  1492.  
  1493.       Rule 1: Remaining space must be allocated for all objects from
  1494.               period i before any object from period i+1 is buffered
  1495.  
  1496.       Rule 2: In the event that there exists enough space to buffer
  1497.               some but not all objects from a given period, space will
  1498.               be reserved for the first objects (i.e. 1,2,3,...,k)
  1499.  
  1500.    With these rules, the Bufferable Set = {(1,2),(1,4)}, the Buffered
  1501.    Set is trivially equal to the empty set, { }, and the Receivable Set
  1502.    = {(1,1),(1,2),(1,3),(1,4),(1,5)}.
  1503.  
  1504.    Note that the current acknowledgment scheme uses the min and max
  1505.    values in the Receivable Set for its window advertisement which is
  1506.    transmitted in all ACK segments sent along the receive-side of the
  1507.    connection (from receiver to sender).  Moreover, the
  1508.    "piggyback_delay" timer is still used to couple ACKs with return data
  1509.    (as utilized in standard TCP).
  1510.  
  1511.  
  1512.  
  1513.  
  1514. Connolly, Amer & Conrad                                        [Page 27]
  1515.  
  1516. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  1517.  
  1518.  
  1519.    Returning to our example, let us now assume that object 1 and then 3
  1520.    arrive at the receiver and object 2 is lost.  After processing both
  1521.    objects, the PO Matrix and Processed Vector will have the following
  1522.    updated structure,
  1523.  
  1524.                 1 2 3 4 5 6
  1525.               +-------------+
  1526.             1 | - 0 0 0 0 0 |
  1527.             2 | - - 0 0 0 1 |
  1528.             3 | - - - 0 0 0 |
  1529.             4 | - - - - 0 1 |
  1530.             5 | - - - - - 1 |      [ T F T F F F ]
  1531.             6 | - - - - - - |        1 2 3 4 5 6
  1532.               +-------------+
  1533.  
  1534.                  PO Matrix        Processed Vector
  1535.  
  1536.    We can see that the Deliverable Set = {(1,2),(1,4),(1,5)}, but what
  1537.    should the Bufferable Set consist of?  Since only one buffer is
  1538.    required for the current period's objects, we have 1 Mbyte of
  1539.    additional space available for "future" objects and therefore include
  1540.    the first object from period #2 in both the Bufferable and the
  1541.    Receivable Set,
  1542.  
  1543.       Deliverable Set = {(1,2),(1,4),(1,5)}
  1544.  
  1545.       Bufferable Set =  {(1,6),(2,1)}
  1546.  
  1547.       Buffered Set = { }
  1548.  
  1549.       Receivable Set = {(1,2),(1,4),(1,5),(1,6),(2,1)}
  1550.  
  1551.    In general, the notion of window management takes on new meaning with
  1552.    a partial order service.  One may re-examine the classic window
  1553.    relations with a partial order service in mind and devise new, less
  1554.    restrictive relations which may shed further light on the operation
  1555.    of such a service.
  1556.  
  1557.    Two final details: (1) as with the sender, the receiver must
  1558.    periodically establish or modify the PO service profile and (2) upon
  1559.    processing the last object in a period, the receiver must re-set the
  1560.    PO matrix and Processed vector to their initial states.
  1561.  
  1562.  
  1563.  
  1564.  
  1565.  
  1566.  
  1567.  
  1568.  
  1569.  
  1570. Connolly, Amer & Conrad                                        [Page 28]
  1571.  
  1572. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  1573.  
  1574.  
  1575.    Let us look at the state machine and pseudo-code for the receiver.
  1576.  
  1577.          (2)Data Segment Arrival          (5)PO Profile fragment Arrival
  1578.             +------+                          +-------+
  1579.             |      |                          |       |
  1580.             |      V    (1)First PO Profile   |       V
  1581.           +---------+     fragment arrives   +---------+(6) Data Segment
  1582.     +---->|         |----------------------->|         |<-----+ Arrival
  1583.     |     |  ESTAB  |                        |   PO    |------+
  1584.     |     |         |                        |         |
  1585.     |     |         |                        |  SETUP  |<-----+
  1586. (3) +-----|         |<-----------------------|         |------+
  1587. Terminator+---------+  (9)PO Setup complete  +---------+(7) Terminator
  1588.             ^      |                          |      ^
  1589.             |      |                          |      |
  1590.             +------+                          +------+
  1591.           (4)Piggyback Timeout             (8)Piggyback Timeout
  1592.  
  1593.  
  1594.    Event 1 - First PO Service Profile fragment arrives at network
  1595.    =======   interface
  1596.       Transition to the PO SETUP state
  1597.       Store the PO service profile (fragment)
  1598.       Send an Acknowledgement of the PO service profile (fragment)
  1599.  
  1600.    Event 2 - Data Segment Arrival
  1601.    =======
  1602.       If object is in Deliverable Set then
  1603.            Deliver the object
  1604.            Update PO Matrix and Processed Vector
  1605.            Check buffers for newly deliverable objects
  1606.            If all objects from current period have been processed then
  1607.                 Start the next period (re-initialize data structures)
  1608.            Start piggyback_delay timer to send an ACK
  1609.       Else if object is in Bufferable Set then
  1610.            Store the object
  1611.       Else
  1612.            Discard object
  1613.            Start piggyback_delay timer to send an ACK
  1614.  
  1615.    Event 3 - Periodic call of the Terminator
  1616.    =======
  1617.       For all unprocessed objects in the current period do
  1618.            If object is "no longer useful" then
  1619.                 Update PO Matrix and Processed Vector
  1620.                 If object is in a buffer then
  1621.                      Release the buffer
  1622.                 Check buffers for newly deliverable objects
  1623.  
  1624.  
  1625.  
  1626. Connolly, Amer & Conrad                                        [Page 29]
  1627.  
  1628. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  1629.  
  1630.  
  1631.                 If all objects from current period have been processed
  1632.                 then Start the next period (re-initialize data
  1633.                 structures)
  1634.  
  1635.    Event 4 - Piggyback_delay Timer Expires
  1636.    =======
  1637.       Send an ACK
  1638.       Disable piggyback_delay timer
  1639.  
  1640.    Event 5 - PO Service Profile fragment arrives at network interface
  1641.    =======
  1642.       Store the PO service profile (fragment)
  1643.       Send an Acknowledgement of the PO service profile (fragment)
  1644.       If entire PO Service profile has been received then enable Event
  1645.       (9)
  1646.  
  1647.    Event 6 - Data Segment arrival
  1648.    =======
  1649.       (See event 2)
  1650.  
  1651.    Event 7 - Periodic call of the terminator
  1652.    =======
  1653.       (See Event 3)
  1654.  
  1655.    Event 8 - Piggyback_delay Timer Expires
  1656.    =======
  1657.       (See Event 4)
  1658.  
  1659.    Event 9 - PO Setup Complete
  1660.    =======
  1661.       Transition to the ESTAB state
  1662.  
  1663.    Note that, for reasons of clarity, we have used a transitively closed
  1664.    matrix representation of the partial order.  A more efficient
  1665.    implementation based on an adjacency list representation of a
  1666.    transitively reduced precedence graph results in a more efficient
  1667.    running time [CAC93].
  1668.  
  1669. 5. Quantifying and Comparing Partial Order Services
  1670.  
  1671.    While ordered, reliable delivery is ideal, the existence of less-
  1672.    than-ideal underlying networks can cause delays for applications that
  1673.    need only partial order or partial reliability.  By introducing a
  1674.    partial order service, one may in effect relax the requirements on
  1675.    order and reliability and presumably expect some savings in terms of
  1676.    buffer utilization and bandwidth (due to fewer retransmissions) and
  1677.    shorter overall delays.  A practical question to be addressed is,
  1678.    "what are the expected savings likely to be?"
  1679.  
  1680.  
  1681.  
  1682. Connolly, Amer & Conrad                                        [Page 30]
  1683.  
  1684. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  1685.  
  1686.  
  1687.    As mentioned in Section 2, the extent of such savings will depend
  1688.    largely on the quality of the underlying network - bandwidth, delay,
  1689.    amount and distribution of loss/duplication/disorder - as well as the
  1690.    flexibility of the partial order itself - specified by the PO matrix
  1691.    and reliability vector.  If the underlying network has no loss, a
  1692.    partial order service essentially becomes an ordered service.
  1693.    Collecting experimental data to ascertain realistic network
  1694.    conditions is a straightforward task and will help to quantify in
  1695.    general the value of a partial order service [Bol93].  But how can
  1696.    one quantify and compare the cost of providing specific levels of
  1697.    service?
  1698.  
  1699.    Preliminary research indicates that the number of linear extensions
  1700.    (orderings) of a partial order in the presence of loss effectively
  1701.    measures the complexity of that order.  The authors have derived
  1702.    formulae for calculating the number of extensions when a partial
  1703.    order is series-parallel and have proposed a metric for comparing
  1704.    partial orders based on this number [ACCD93b].  This metric could be
  1705.    used as a means for charging for the service, for example. What also
  1706.    may be interesting is a specific head-to-head comparison between
  1707.    different partial orders with varying degrees of flexibility.  Work
  1708.    is currently underway on a simulation model aimed at providing this
  1709.    information.  And finally, work is underway on an implementation of
  1710.    TCP which includes partial order service.
  1711.  
  1712. 6. Future Direction
  1713.  
  1714.    In addition to the simulation and implementation work the authors are
  1715.    pursuing several problems related to partial ordering which will be
  1716.    mentioned briefly.
  1717.  
  1718.    An interesting question arises when discussing the acknowledgment
  1719.    strategy for a partial order service.  For classic protocols, a
  1720.    cumulative ACK of object i confirms all objects "up to and including"
  1721.    i.  But the meaning of "up to and including" with a partial order
  1722.    service has different implications than with an ordered service.
  1723.  
  1724.    Consider our example partial order, ((1;2)||(3;4)||5);6).  What
  1725.    should a cumulative ACK of object 4 confirm?  The most logical
  1726.    definition would say it confirms receipt of object 4 and all objects
  1727.    that precede 4 in the partial order, in this case, object 3.  Nothing
  1728.    is said about the arrival of objects 1 or 2.  With this alternative
  1729.    interpretation where cumulative ACKs depend on the partial order, the
  1730.    sender must examine the partial order matrix to determine which
  1731.    buffers can be released.  In this example, scanning column 4 of the
  1732.    matrix reveals that object 3 must come before object 4 and therefore
  1733.    both object buffers (and any buffers from a previous period) can be
  1734.    released.
  1735.  
  1736.  
  1737.  
  1738. Connolly, Amer & Conrad                                        [Page 31]
  1739.  
  1740. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  1741.  
  1742.  
  1743.    Other partial order acknowledgment policies are possible for a
  1744.    protocol providing a partial order service including the use of
  1745.    selective ACKs (which has been proposed in [JB88] and implemented in
  1746.    the Cray TCP [Chang93]) as well as the current TCP strategy where an
  1747.    ACK of i also ACKs everything <= i (in a cyclical sequence number
  1748.    space).  The authors are investigating an ACK policy which utilizes a
  1749.    combination of selective and "partial-order-cumulative"
  1750.    acknowledgments.  This is accomplished by replacing the current TCP
  1751.    cumulative ACK with one which has the partial order meaning as
  1752.    described above and augmenting this with intermittent selective ACKs
  1753.    when needed.
  1754.  
  1755.    In another area, the notion of fragmented delivery, mentioned in the
  1756.    beginning of Section 4, looks like a promising technique for certain
  1757.    classes of applications which may offer a substantial improvement in
  1758.    memory utilization.  Briefly, the term fragmented delivery refers to
  1759.    the ability to transfer less-than-complete objects between the
  1760.    transport layer and the user application (or session layer as the
  1761.    case may be).  For example, a 1Mbyte object could potentially be
  1762.    delivered in multiple "chunks" as segments arrive thus freeing up
  1763.    valuable memory and reducing the delay on those pieces of data.  The
  1764.    scenario becomes somewhat more complex when multiple "parallel
  1765.    streams" are considered where the application could now receive
  1766.    pieces of multiple objects associated with different streams.
  1767.  
  1768.    Additional work in the area of implementing a working partial order
  1769.    protocol is being performed both at the University of Delaware and at
  1770.    the LAAS du CNRS laboratory in Toulouse, France - particularly in
  1771.    support of distributed, high-speed, multimedia communication. It will
  1772.    be interesting to examine the processing requirements for an
  1773.    implementation of a partial order protocol at key events (such as
  1774.    object arrival) compared with a non-partial order implementation.
  1775.  
  1776.    Finally, the authors are interested in the realization of a network
  1777.    application utilizing a partial order service.  The aim of such work
  1778.    is threefold: (1) provide further insight into the expected
  1779.    performance gains, (2) identify new issues unique to partial order
  1780.    transport and, (3) build a road-map for application designers
  1781.    interested in using a partial order service.
  1782.  
  1783. 7. Summary
  1784.  
  1785.    This RFC introduces the concepts of a partial order service and
  1786.    discusses the practical issues involved with including partial
  1787.    ordering in a transport protocol.  The need for such a service is
  1788.    motivated by several applications including the vast fields of
  1789.    distributed databases, and multimedia.  The service has been
  1790.    presented as a backward-compatible extension to TCP to adapt to
  1791.  
  1792.  
  1793.  
  1794. Connolly, Amer & Conrad                                        [Page 32]
  1795.  
  1796. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  1797.  
  1798.  
  1799.    applications with different needs specified in terms of QOS
  1800.    parameters.
  1801.  
  1802.    The notion of a partial ordering extends QOS flexibility to include
  1803.    object delivery, reliability, and temporal value thus allowing the
  1804.    transport layer to effectively handle a wider range of applications
  1805.    (i.e., any which might benefit from such mechanisms).  The service
  1806.    profile described in Section 4 accurately characterizes the QOS for a
  1807.    partial order service (which encompasses the two extremes of total
  1808.    ordered and unordered transport as well).
  1809.  
  1810.    Several significant modifications have been proposed and are
  1811.    summarized here:
  1812.  
  1813.        (1) Replacing the requirement for ordered delivery with one for
  1814.            application-dependent partial ordering
  1815.  
  1816.        (2) Allowing unreliable and partially reliable data transport
  1817.  
  1818.        (3) Conducting a non-symmetrical connection (not entirely foreign
  1819.            to TCP, the use of different MSS values for the two sides
  1820.            of a connection is an example)
  1821.  
  1822.        (4) Management of "objects" rather than octets
  1823.  
  1824.        (5) Modified acknowledgment strategy
  1825.  
  1826.        (6) New definition for the send and receive "windows"
  1827.  
  1828.        (7) Extension of the User/TCP interface to include certain
  1829.            QOS parameters
  1830.  
  1831.        (8) Use of new TCP options
  1832.  
  1833.    As evidenced by this list, a partial order and partial reliability
  1834.    service proposes to re-examine several fundamental transport
  1835.    mechanisms and, in so doing, offers the opportunity for substantial
  1836.    improvement in the support of existing and new application areas.
  1837.  
  1838.  
  1839.  
  1840.  
  1841.  
  1842.  
  1843.  
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849.  
  1850. Connolly, Amer & Conrad                                        [Page 33]
  1851.  
  1852. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  1853.  
  1854.  
  1855. 8. References
  1856.  
  1857.    [ACCD93a]  Amer, P., Chassot, C., Connolly, T., and M. Diaz,
  1858.               "Partial Order Transport Service for Multimedia
  1859.               Applications: Reliable Service", Second International
  1860.               Symposium on High Performance Distributed Computing
  1861.               (HPDC-2), Spokane, Washington, July 1993.
  1862.  
  1863.    [ACCD93b]  Amer, P., Chassot, C., Connolly, T., and M. Diaz,
  1864.               "Partial Order Transport Service for Multimedia
  1865.               Applications: Unreliable Service", Proc. INET '93, San
  1866.               Francisco, August 1993.
  1867.  
  1868.    [AH91]     Anderson, D., and G. Homsy, "A Continuous Media I/O
  1869.               Server and its Synchronization Mechanism", IEEE
  1870.               Computer, 24(10), 51-57, October 1991.
  1871.  
  1872.    [AS93]     Agrawala, A., and D. Sanghi, "Experimental Assessment
  1873.               of End-to-End Behavior on Internet," Proc. IEEE INFOCOM
  1874.               '93, San Francisco, CA, March 1993.
  1875.  
  1876.    [BCP93]    Claffy, K., Polyzos, G., and H.-W. Braun, "Traffic
  1877.               Characteristics of the T1 NSFNET", Proc. IEEE INFOCOM
  1878.               '93, San Francisco, CA, March 1993.
  1879.  
  1880.    [Bol93]    Bolot, J., "End-to-End Packet Delay and Loss Behavior
  1881.               in the Internet", SIGCOMM '93, Ithaca, NY, September
  1882.               1993.
  1883.  
  1884.    [CAC93]    Conrad, P., Amer, P., and T. Connolly, "Improving
  1885.               Performance in Transport-Layer Communications Protocols
  1886.               by using Partial Orders and Partial Reliability",
  1887.               Work in Progress, December 1993.
  1888.  
  1889.    [Chang93]  Chang, Y., "High-Speed Transport Protocol Evaluation --
  1890.               the Final Report", MCNC Center for Communications
  1891.               Technical Document, February 1993.
  1892.  
  1893.    [Dee89]    Deering, S., "Host Extensions for IP Multicasting," STD
  1894.               5, RFC 1112 Stanford University, August 1989.
  1895.  
  1896.    [DS93]     Diaz, M., and P. Senac, "Time Stream Petri Nets: A
  1897.               Model for Multimedia Synchronization", Proceedings of
  1898.               Multimedia Modeling '93, Singapore, 1993.
  1899.  
  1900.  
  1901.  
  1902.  
  1903.  
  1904.  
  1905.  
  1906. Connolly, Amer & Conrad                                        [Page 34]
  1907.  
  1908. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  1909.  
  1910.  
  1911.    [HKN91]    Hardt-Kornacki, S., and L. Ness, "Optimization Model
  1912.               for the Delivery of Interactive Multimedia Documents",
  1913.               In Proc.  Globecom '91, 669-673, Phoenix, Arizona,
  1914.               December 1991.
  1915.  
  1916.    [JB88]     Jacobson, V., and R. Braden, "TCP Extensions for
  1917.               Long-Delay Paths", RFC 1072, LBL, USC/Information
  1918.               Sciences Institute, October 1988.
  1919.  
  1920.    [JBB92]    Jacobson, V., Braden, R., and D. Borman, "TCP
  1921.               Extensions for High Performance", RFC 1323, LBL, Cray
  1922.               Research, USC/Information Sciences Institute, May 1992.
  1923.  
  1924.    [LMKQ89]   Leffler, S., McKusick, M., Karels, M., and J.
  1925.               Quarterman, "4.3 BSD UNIX Operating System",
  1926.               Addison-Wesley Publishing Company, Reading, MA, 1989.
  1927.  
  1928.    [OP91]     O'Malley, S., and L. Peterson, "TCP Extensions
  1929.               Considered Harmful", RFC 1263, University of Arizona,
  1930.               October 1991.
  1931.  
  1932.    [Pos81]    Postel, J., "Transmission Control Protocol - DARPA
  1933.               Internet Program Protocol Specification," STD 7,
  1934.               RFC 793, DARPA, September 1981.
  1935.  
  1936. Security Considerations
  1937.  
  1938.    Security issues are not discussed in this memo.
  1939.  
  1940.  
  1941.  
  1942.  
  1943.  
  1944.  
  1945.  
  1946.  
  1947.  
  1948.  
  1949.  
  1950.  
  1951.  
  1952.  
  1953.  
  1954.  
  1955.  
  1956.  
  1957.  
  1958.  
  1959.  
  1960.  
  1961.  
  1962. Connolly, Amer & Conrad                                        [Page 35]
  1963.  
  1964. RFC 1693       An Extension to TCP: Partial Order Service  November 1994
  1965.  
  1966.  
  1967. Authors' Addresses
  1968.  
  1969.    Tom Connolly
  1970.    101C Smith Hall
  1971.    Department of Computer & Information Sciences
  1972.    University of Delaware
  1973.    Newark, DE 19716 - 2586
  1974.  
  1975.    EMail: connolly@udel.edu
  1976.  
  1977.  
  1978.    Paul D. Amer
  1979.    101C Smith Hall
  1980.    Department of Computer & Information Sciences
  1981.    University of Delaware
  1982.    Newark, DE 19716 - 2586
  1983.  
  1984.    EMail: amer@udel.edu
  1985.  
  1986.  
  1987.    Phill Conrad
  1988.    101C Smith Hall
  1989.    Department of Computer & Information Sciences
  1990.    University of Delaware
  1991.    Newark, DE 19716 - 2586
  1992.  
  1993.    EMail: pconrad@udel.edu
  1994.  
  1995.  
  1996.  
  1997.  
  1998.  
  1999.  
  2000.  
  2001.  
  2002.  
  2003.  
  2004.  
  2005.  
  2006.  
  2007.  
  2008.  
  2009.  
  2010.  
  2011.  
  2012.  
  2013.  
  2014.  
  2015.  
  2016.  
  2017.  
  2018. Connolly, Amer & Conrad                                        [Page 36]
  2019.  
  2020.